var ID_CURRENT_TYPE = -1;       // Хранит в себе id выбранного Типа

$(document).ready(function(){

    // Добавляем скролл к таблице Типов
    $("#scrollTableType").scrollbar({
        height: 500,
        axis: 'y'
    });

    // Отрисовка таблицы Подтипов
    $('#tableSubType').dataTable({
        "bProcessing": true,
        "bServerSide": true,
        "bPaginate": false,
        "bLengthChange": false,
        "bFilter": false,
        "bSort": false,
        "bInfo": false,
        "sScrollY": "500px",
        "sAjaxSource": "./getSubType",
        "sServerMethod": "POST",
        "oLanguage": {"sUrl": "./resources/datatables.russian.txt"},
        "fnServerParams": function (aoData){
            aoData.push({name:"idCurrentTypeFormat",value:ID_CURRENT_TYPE})
        },
        "aoColumns": [

            {"mData":"id","bSortable":false, bVisible:false },
            {"mData":"name","bSortable":true}

        ],
        "fnRowCallback": function(nRow, aData, iDisplayIndex) {

            nRow.onclick = function(e) {

                // активируем кнопки
                activateButtonSubType(true);

                // Подсвечиваем строку на которую кликнул пользователь
                $('#tableSubType tbody tr').removeClass('row_selected');
                $(e.target.parentNode).toggleClass('row_selected');
            };
        }
    });
});

// Обновление данных в таблице Тип компонентов
function updateTableComponentsType(){

    $.ajax({
        type: "POST",
        url:"getTypes",
        data: {parentId: -1},
        "success" : function(data) {
            var arrayTypes = eval(data).values;
            var str = '<ul id="tableType"> ';
            for(var i in arrayTypes) {

                if(arrayTypes[i].id == ID_CURRENT_TYPE)
                    str += "<li class=active id="+arrayTypes[i].id+"><a>" + arrayTypes[i].name + "</a></li> ";
                else
                    str += "<li id="+arrayTypes[i].id+"><a>" + arrayTypes[i].name + "</a></li> ";
            }
            str += "</ul>";

            $("#tableType").replaceWith(str);

            // добавляем обработчик нажатия на поле
            addClickListenerInTableType();
        }
    });

};

// Обработка нажатия на строку таблицы типов
function addClickListenerInTableType(){

    $("#tableType li").on('click', function(){

        // активируем кнопки
        activateButtonType(true);

        // выделяем поле на которое кликнул пользователь
        $("li").removeClass("active");

        if(! $(this).hasClass("title")){

            $(this).attr("class", "active");

            // запоминаем id кликнутого поля
            if(ID_CURRENT_TYPE != $(this).attr('id')){
                ID_CURRENT_TYPE = $(this).attr('id');

                // если id изменился то деактивируем кнопки
                activateButtonSubType(false);

                // если id изменился то перерисовываем таблицу подтипов
                updateTableComponentsSubType();
            }
        }
    });
}

// Обновление данных в таблице Подтип компонентов
function updateTableComponentsSubType(){
    var table = $('#tableSubType').dataTable();
    table.fnDraw();
};

// Добавление подтипа
function addComponentSubType(){

    var nameType;
    $( "#tableType li" ).each(function( index ) {

        if($(this).hasClass("active"))
            nameType = $(this).text();
    });

    $.Dialog({
        "title": nameType,
        "draggable": true,
        "padding": 5,
        "height": 150,
        "width": 500,
        "onShow" : function(_dialog){
        var content =   '<label>Введите новый подтип комплектующего.</label>'+
                        '<div class="input-control text">' +
                        '<input type="text" id="newSubType" name="subType" value="">'+
                        '<button class="btn-clear"></button>'+
                        '</div>' +
                        '<div class="form-actions" align="right">' +
                        '<button class="button info" id="buttonAddSubType">Добавить.</button>&nbsp;'+
                        '<button class="button" type="button" onclick="$.Dialog.close()">Отмена.</button> '+
                        '</div>';

            $.Dialog.content(content);
            $.Metro.initInputs();

            // Обработка нажатия кнопки сохранить
            $('#buttonAddSubType').on('click', function(){

                // Новый тип
                var newSubType = $('#newSubType').val();

                if(newSubType != ""){
                    $.ajax({
                        type: "POST",
                        url:"addSubType",
                        data: { newSubType: newSubType, parentId:ID_CURRENT_TYPE}
                    })
                    .done(function( msg ) {
                        updateTableComponentsSubType();
                    });

                    $.Dialog.close();
                }else{
                    $.Notify({
                        "content": "Введите новый подтип комплектующего.",
                        "style": {"background": 'darkred', "color": 'white', "font": 'bold'},
                        "timeout": 8000
                    });
                }

            });
        }
    });
};

// Удаление подтипа
function removeComponentSubType(){


    var table = $('#tableSubType').dataTable();
    var row = table.fnGetData( $('#tableSubType tr.row_selected'))

    var nameSubType = row.name;
    var idSubType = row.id;
    console.log(idSubType);


    $.ajax({
        type: "POST",
        url: "getHeirSubTypes",
        data: {parentId: idSubType},
        "success" : function(data) {

            // Есть ли наследники
            // 1 есть
            // 0 нет
            var isHeir = eval(data).heir;

        $.Dialog({
            "title": "Удаление.",
            "draggable": true,
            "padding": 5,
            "height": 140,
            "width": 470,
            "onShow" : function(_dialog){

                var content;
                if(isHeir == 0){
                    content =   '<label>Вы действиетельно хотите удалить: </label>'+
                        '<label><strong><i>'+nameSubType+'</i></strong></label>'+
                        '<div class="form-actions" align="right">' +
                        '<button class="button danger" id="buttonDelSubType">Удалить.</button>&nbsp;'+
                        '<button class="button" type="button" onclick="$.Dialog.close()">Отмена.</button> '+
                        '</div>';
                }else{
                    content =   '<label align="center"><strong>Удаление невозможно!</strong></label>'+
                        '<label> Поле <i>'+nameSubType+'</i> содержит элементы.</label>'+
                        '<div class="form-actions" align="center">' +
                        '<button class="button" type="button" onclick="$.Dialog.close()">Закрыть.</button> '+
                        '</div>';
                }

                $.Dialog.content(content);
                $.Metro.initInputs();

                // Обработка нажатия кнопки сохранить
                $('#buttonDelSubType').on('click', function(){
                    $.ajax({
                        type: "POST",
                        url:"removeType",
                        data: { idType: idSubType}
                    })
                    .done(function( msg ) {
                        activateButtonSubType(false);
                        // Обновляем таблицу подтипов
                        updateTableComponentsSubType();
                    });
                    $.Dialog.close();
                });
            }
        });
        }
    });

};

// Изменение подтипа
function editComponentSubType(){

    var table = $('#tableSubType').dataTable();
    var row = table.fnGetData( $('#tableSubType tr.row_selected'))

    var nameSubType = row.name;
    var idSubType = row.id;

    // получаем список родителей
    $.ajax({
        type: "POST",
        url: "getTypes",
        data: {parentId: ID_CURRENT_TYPE},
        "success" : function(data) {
            var arrayTypes = eval(data).values;

            // формируем список родителей
            var parentsSelect;
            for(var i in arrayTypes) {
                parentsSelect += '<option value="'+arrayTypes[i].id+'">'+arrayTypes[i].name+'</option>\n';
            }

            $.Dialog({
                "title": "Редактирование.",
                "draggable": true,
                "padding": 5,
                "height": 210,
                "width": 500,
                "onShow" : function(_dialog){
                    var content =   '<label>Выберите родителя.</label>'+
                                    '<select id="parentsSubType">'+
                                    parentsSelect+
                                    '</select>'+
                                    '<label>Введите новый подтип комплектующего.</label>'+
                                    '<div class="input-control text">' +
                                    '<input type="text" id="newSubType" name="subSubType" value="' + nameSubType+ '">'+
                                    '<button class="btn-clear"></button>'+
                                    '</div>' +
                                    '<div class="form-actions" align="right">' +
                                    '<button class="button info" id="buttonEditSubType">Сохранить.</button>&nbsp;'+
                                    '<button class="button" type="button" onclick="$.Dialog.close()">Отмена.</button> '+
                                    '</div>';

                    $.Dialog.content(content);
                    $.Metro.initInputs();

                    // Обработка нажатия кнопки сохранить
                    $('#buttonEditSubType').on('click', function(){

                        // Новый тип
                        var newSubType = $('#newSubType').val();
                        var newParent = $('#parentsSubType').val();

                        if(newSubType != ""){
                            if( (nameSubType != newSubType) ||(ID_CURRENT_TYPE != newParent)){
                                $.ajax({
                                    type: "POST",
                                    url:"editSubType",
                                    data: { newSubType: newSubType, idSubType:idSubType, newParent:newParent}
                                })
                                .done(function( msg ) {
                                    // Обновляем таблицу типов
                                    updateTableComponentsSubType();
                                });
                            }
                            $.Dialog.close();
                        }else{
                            $.Notify({
                                "content": "Введите новый подтип комплектующего.",
                                "style": {"background": 'darkred', "color": 'white', "font": 'bold'},
                                "timeout": 8000
                            });
                        }
                    });
                }
            });
        }
    });
};

// Добавление типа
function addComponentType(){

    $.Dialog({
        "title": "Добавление нового типа комплектующего.",
        "draggable": true,
        "padding": 5,
        "height": 150,
        "width": 500,
        "onShow" : function(_dialog){
            var content =       '<label>Введите новый тип комплектующего.</label>'+
                                '<div class="input-control text">' +
                                '<input type="text" id="newType" name="subType" value="">'+
                                    '<button class="btn-clear"></button>'+
                                '</div>' +
                                '<div class="form-actions" align="right">' +
                                    '<button class="button info" id="buttonAddType">Добавить.</button>&nbsp;'+
                                    '<button class="button" type="button" onclick="$.Dialog.close()">Отмена.</button> '+
                                '</div>';

            $.Dialog.content(content);
            $.Metro.initInputs();

            // Обработка нажатия кнопки сохранить
            $('#buttonAddType').on('click', function(){

                // Новый тип
                var newType = $('#newType').val();

                if (newType != ""){
                    $.ajax({
                        type: "POST",
                        url:"addType",
                        data: { newType: newType}
                    })
                    .done(function( msg ) {
                        // Обновляем таблицу типов
                        updateTableComponentsType();
                    });
                    $.Dialog.close();
                }else{
                    $.Notify({
                        "content": "Введите новый тип комплектующего.",
                        "style": {"background": 'darkred', "color": 'white', "font": 'bold'},
                        "timeout": 8000
                    });
                }
            });
        }
    });
};

// Удаление типа
function removeComponentType(){

    var nameType;
    var idType;
    $( "#tableType li" ).each(function( index ) {

        if($(this).hasClass("active")){

            idType = $(this).attr('id');
            nameType = $(this).text();
        }
    });

    $.ajax({
        type: "POST",
        url: "getHeirTypes",
        data: {parentId: ID_CURRENT_TYPE},
        "success" : function(data) {

            // Есть ли наследники
            // 1 есть
            // 0 нет
            var isHeir = eval(data).heir;

            $.Dialog({
                "title": "Удаление.",
                "draggable": true,
                "padding": 5,
                "height": 140,
                "width": 450,
                "onShow" : function(_dialog){

                    var content;
                    if(isHeir == 0){
                        content =   '<label>Вы действиетельно хотите удалить: </label>'+
                                    '<label><strong><i>'+nameType+'</i></strong></label>'+
                                    '<div class="form-actions" align="right">' +
                                        '<button class="button danger" id="buttonDelType">Удалить.</button>&nbsp;'+
                                        '<button class="button" type="button" onclick="$.Dialog.close()">Отмена.</button> '+
                                    '</div>';
                    }else{
                        content =   '<label align="center"><strong>Удаление невозможно!</strong></label>'+
                                    '<label> Поле <i>'+nameType+'</i> содержит элементы.</label>'+
                                    '<div class="form-actions" align="center">' +
                                        '<button class="button" type="button" onclick="$.Dialog.close()">Закрыть.</button> '+
                                    '</div>';
                    }

                    $.Dialog.content(content);
                    $.Metro.initInputs();

                    // Обработка нажатия кнопки сохранить
                    $('#buttonDelType').on('click', function(){


                        $.ajax({
                            type: "POST",
                            url:"removeType",
                            data: { idType: idType}
                        })
                        .done(function( msg ) {
                            ID_CURRENT_TYPE = -1;
                            activateButtonType(false);
                            // Обновляем таблицу типов
                            updateTableComponentsType();
                            updateTableComponentsSubType();
                        });
                        $.Dialog.close();
                    });
                }
            });
        }
    });
};

// Изменение типа
function editComponentType(){

    var nameType;
    var idType;
    $( "#tableType li" ).each(function( index ) {

        if($(this).hasClass("active")){
            idType = $(this).attr('id');
            nameType = $(this).text();
        }
    });

    $.Dialog({
        "title": "Редактирование.",
        "draggable": true,
        "padding": 5,
        "height": 150,
        "width": 500,
        "onShow" : function(_dialog){
            var content =       '<label>Введите новый тип комплектующего.</label>'+
                '<div class="input-control text">' +
                '<input type="text" id="newType" name="subType" value="' + nameType+ '">'+
                '<button class="btn-clear"></button>'+
                '</div>' +
                '<div class="form-actions" align="right">' +
                '<button class="button info" id="buttonEditType">Сохранить.</button>&nbsp;'+
                '<button class="button" type="button" onclick="$.Dialog.close()">Отмена.</button> '+
                '</div>';

            $.Dialog.content(content);
            $.Metro.initInputs();

            // Обработка нажатия кнопки сохранить
            $('#buttonEditType').on('click', function(){

                // Новый тип
                var newType = $('#newType').val();

                if(nameType != ""){
                    if(nameType != newType){
                        $.ajax({
                            type: "POST",
                            url:"editType",
                            data: { newType: newType, idType:idType}
                        })
                        .done(function( msg ) {
                            // Обновляем таблицу типов
                            updateTableComponentsType();
                        });
                    }
                    $.Dialog.close();
                }else{
                    $.Notify({
                        "content": "Введите новый тип комплектующего.",
                        "style": {"background": 'darkred', "color": 'white', "font": 'bold'},
                        "timeout": 8000
                    });
                }
            });
        }
    });
};

// Активация/деактивация кнопок над таблицей Тип
function activateButtonType(isActivate){
    if(isActivate == true ){
        document.getElementById("removeComponentType").disabled = false;
        document.getElementById("editComponentType").disabled = false;
        document.getElementById("addComponentSubType").disabled = false;
    }else{
        document.getElementById("removeComponentType").disabled = true;
        document.getElementById("editComponentType").disabled = true;
        document.getElementById("addComponentSubType").disabled = true;
    }
};

// Активация/деактивация кнопок над таблицей Подтип
function activateButtonSubType(isActivate){
    if(isActivate == true ){
        document.getElementById("removeComponentSubType").disabled = false;
        document.getElementById("editComponentSubType").disabled = false;
    }else{
        document.getElementById("removeComponentSubType").disabled = true;
        document.getElementById("editComponentSubType").disabled = true;
    }
}













